package com.kid.keep.service;

import com.kid.keep.dto.*;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @Description 检测报告
 * @Author JOHN
 * @Create 2020-01-06
 * @Since 1.0.0
 */
public interface ICheckReportService {

    /**
     * 查看测评报告
     *
     * @param id
     * @param creatorId
     * @return
     */
    CheckItemReportDetailDTO findByIdAndCreatorId(Long id, Long creatorId);

    /**
     * 重新检测
     *
     * @param id
     * @param creatorId
     * @return
     */
    CheckItemReportDTO updateResultByReportId(Long id, Long creatorId);

    /**
     * 按时间类型 统计测评报告类型
     *
     * @param type
     * @param creatorId
     * @return
     */
    List<CheckItemReportDTO> listCheckReportByDateType(Integer type, Long creatorId);

    /**
     * 统计报告总数
     *
     * @param creatorId
     * @return
     */
    Integer countCheckReport(Long creatorId);

    /**
     * 查询要检测的项目
     *
     * @param id
     * @param creatorId
     * @return
     */
    List<ChildCheckItemDTO> findByReportIdAndCreatorId(Long id, Long creatorId);



    /**
     * 查询要检测的项目
     *
     * @param reportId
     * @param creatorId
     * @param itemId
     * @return
     */
    ChildCheckItemDTO findByReportIdAndCreatorIdAndItemId(Long reportId, Long creatorId, Long itemId);


    /**
     * 保存测试项结果
     *
     * @param addCheckItemResultDTO
     * @param userId
     * @return
     */
    @Transactional(rollbackForClassName = "Exception")
    AddChildCheckItemResultDTO addCheckItemResult(AddCheckItemResultDTO addCheckItemResultDTO, Long userId);

    /**
     * 查询测试项结果
     *
     * @param userId
     * @param itemId
     * @param userId
     * @return
     */

    ChildCheckItemResultDetailDTO getCheckItemResult(Long reportId, Long itemId, Long userId);

    /**
     * 生成测试报告
     *
     * @param reportId
     * @param userId
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    CheckItemReportDTO generateCheckItemReport(Long reportId, Long userId);
}
